package list;

/**
 * Nodo.java
 * @since   13/08/1992
 * @author Ben
 * @param <E> Tipo de objetos que utiliza esta clase
 * Basado en código de Java Structures de Duan y Baily
 */
public class Nodo<E>
{
   protected E data; // value stored in this element
   protected Nodo<E> nextElement; // ref to next

   /**
    * @pre V es un valor, next es la referencia al ultimo elemento
    * @post se contruye un elemento como nueva cabeza
    * @param v valor
    * @param next referencia al siguiente
    */
   public Nodo(E v, Nodo<E> next){
       data = v;
       nextElement = next;
   }

   /**
    * @pre construye una colección con el valor v
    * @param v  valor
    */
   public Nodo(E v){
      this(v,null);
   }

   /**
    * @post referencia al siguiente valor
    * @return referencia al siguiente valor
    */
   public Nodo<E> next(){
      return nextElement;
   }

   /**
    * @post coloca una referencia al siguiente valor
    * @param next  siguiente valor
    */
   public void setNext(Nodo<E> next){
      nextElement = next;
   }

   /**
    * @post Retorna el valor asociado a este elemento
    * @return el valor de este elemento
    */
   public E value(){
      return data;
   }

   /**
    * @post Fija el valor de este elemento
    * @param value valor nuevo de este elemento
    */
   public void setValue(E value){
      data = value;
   }
}
